package main

import "fmt"

/*
给你一个字符串 s 和一个字符串数组 dictionary ，找出并返回dictionary 中最长的字符串，该字符串可以通过删除 s 中的某些字符得到。
如果答案不止一个，返回长度最长且字典序最小的字符串。如果答案不存在，则返回空字符串。
*/
func main() {

	s := "bab"
	dictionary := []string{"ba", "ab", "a", "b"}
	fmt.Println(findLongestWord(s, dictionary))
}

/**
 *	findLongestWord
 *	@Description: 双指针
 *	@param s string
 *	@param dictionary []string
 *	@return maxStr string
 */
func findLongestWord(s string, dictionary []string) (maxStr string) {
	for _, str := range dictionary {
		p1 := 0
		strN := len(str)
		for i := range s {
			if str[p1] == s[i] {
				p1++
				if p1 == strN {
					if strN > len(maxStr) || strN == len(maxStr) && maxStr > str {
						maxStr = str
					}
					break
				}
			}
		}

	}
	return maxStr
}
